
// task 处理任务  处理异步任务
// 查找 package.json 中的 version
const { task } = require('folktale/concurrency/task')
const {split, find} = require('lodash/fp')
const fs = require('fs')  //node 中读取文件

function readFile (filename) {
    return task(resolver => {
        fs.readFile(filename, 'utf-8', (err, data)=> {
            if(err) resolver.reject(err)

            resolver.resolve(data)
        })
    }) 
}

readFile('package.json')
    .map(split('\n'))
    .map(find(x=> x.includes('version')))
    .run()
    .listen({
        onRejected:err => {
            console.log(err)
        },
        onResolved:value => {
            console.log(value)
        }
    })

// Pointed 函子 就是实现了 of静态方法的 函子。
// of方法是避免使用new来创建对象，更深层次的含义是of方法用来把 值放到上下文里（放到盒子里，就像我们之前使用的那些函子）
